package com.xbongbong.pro.enums.raiders.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

import java.util.Objects;

/**
 * 商品有效期枚举
 * @author zcp
 * @version v1.0
 * @date 19/10/16 016 11:22
 * @update 19/10/16 016 11:22
 * @since v1.0
 */
@Getter
public enum RaidersProductValidEnum {
    /**
     * 商品兑换有效期枚举，对应数据库内valid字段
     */
    FOREVER(0, "enum.raidersProductValid.name.forever"),


    FROM_EXCHANGE_DAY_7(1, "enum.raidersProductValid.name.from_exchange_day_7"),


    FROM_EXCHANGE_MONTH_1(2, "enum.raidersProductValid.name.from_exchange_month_1"),


    FROM_EXCHANGE_MONTH_3(3, "enum.raidersProductValid.name.from_exchange_month_3"),


    FROM_EXCHANGE_MONTH_6(4, "enum.raidersProductValid.name.from_exchange_month_6"),


    FROM_EXCHANGE_YEAR_1(5, "enum.raidersProductValid.name.from_exchange_year_1"),


    UNKNOWN(404, "enum.raidersProductValid.name.unknown"),

    ;

    /**
     * 枚举值 --
     */
    private final int code;
    /**
     * 枚举信息--中文名称
     */
    private final String name;

    RaidersProductValidEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }
    
    /**
     * 通过code获取枚举
     * @param code
     * @return com.xbongbong.pro.enums.raiders.enums.RaidersProductValidEnum
     * @author zcp
     * @date 19/10/16 016 16:19
     * @update 19/10/16 016 16:19
     * @since v1.0
     * @version v1.0
     */
    public static RaidersProductValidEnum getByCode(Integer code) {
        for (RaidersProductValidEnum cache : values()) {
            if (Objects.equals(code, cache.code)) {
                return cache;
            }
        }
        return UNKNOWN;
    }

    /**
     * 通过code获取name
     *
     * @param code code
     * @return java.lang.String
     * @author 徐俊杰
     * @date 2019/11/1 15:15
     * @since v1.0
     */
    public static String getNameByCode(Integer code) {
        for (RaidersProductValidEnum cache : values()) {
            if (Objects.equals(code, cache.code)) {
                return cache.getName();
            }
        }
        return UNKNOWN.getName();
    }

    public String getName() {
        return I18nMessageUtil.getMessage(name);
    }

}
